Software distributions are typically built into an installation program and stored on a compact disc (CD), to be purchased by a customer. Such distributions usually include at least one program file and a number of other packages that work with the program file to provide additional functionality and features. These CDs are prepackaged and designed to include features that the company selling the software thinks will be desired by customers.
Manufacturers of such software products recognize that a “one size fits all” mentality often does not work for all clients. Thus, manufacturers sometimes produce multiple different versions of a software package that a user chooses from. Applications that are individually selected are then individually installed. If several different applications are selected, a considerable amount of time can be spent installing the different applications. In addition, after installation, each application then must be individually configured as desired by the user.
To make it easier for users wishing to install several applications a vendor can bundle several applications together in an application suite. For example, application suites are very popular products today. Most versions include a word processor and a spreadsheet program. But some versions might include a database package, whereas other versions might include a slideshow generating program. Still other versions might include stripped-down versions of the products, priced to sell to students and educators. By offering different versions of the product, the manufacturer hopes that as many customers as possible will be satisfied by the different versions, thereby maximizing the manufacturer's sales.
This approach to building pre-packaged software installations is used not just with application software, but also with operating systems. For example, in selecting a Linux® distribution, a customer must choose between different packages of distributions that have been released and are available in off-the shelf combinations. (Linux is a registered trademark of Linus Torvalds.) A customer typically chooses a Linux distribution by first selecting a vendor who sells Linux distributions, and then identifying a particular distribution available from the vendor that has the most features that the customer is looking for. But if a customer wants a finer level of control in selecting the structure of the Linux distribution, the customer is usually left wanting.
Virtual machine (VM) images of a Linux distribution are handled similarly. Virtual machines enable multiple operating systems to be run on a computer at the same time: in other words, the multiple operating systems can be run in parallel. A VM consists of a hosting operating system (OS) and VM images representing operating systems to run on the computer. The hosting OS loads the appropriate VM images. Each VM image is essentially an emulation of the OS it represents, appearing to the user as if the OS were running directly on the computer. As a VM image is installed on a computer, the VM image is then configured to access installed hardware, use partitions of a hard drive, and use optional features of the VM image. Customers looking for a VM image are hindered by the limitations discussed above. Namely, a customer must first select a vendor selling VM images, and then identify a VM image that has the most features that the user desires.
Accordingly, a need remains to allow a user to create a customized VM image, including only operating system packages and applications that the user wants, verifying that the VM image will be operable at run-time, and including any required package dependencies.